GtkWindow: use a weak ref to keep track of attach_widget
authorMatthias Clasen <mclasen@redhat.com>
Thu, 2 May 2013 12:01:14 +0000 (08:01 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 2 May 2013 12:01:14 +0000 (08:01 -0400)
Taking a full reference of the attach widget creates a reference
cycle, and keeps the attach_widget alive longer than it should.

gtk/gtkwindow.c

index 16942b8ab3d9d41f82d79772c80db0d8c752e6e1..b6e3e15964f773790bae3591a0d44bdcda89328a 100644 (file)
@@ -2510,7 +2510,7 @@ remove_attach_widget (GtkWindow *window)
     {
       _gtk_widget_remove_attached_window (priv->attach_widget, window);
 
-      g_object_unref (priv->attach_widget);
+      g_object_remove_weak_pointer (priv->attach_widget, &priv->attach_widget);
       priv->attach_widget = NULL;
     }
 }
@@ -2760,7 +2760,7 @@ gtk_window_set_attached_to (GtkWindow *window,
     {
       _gtk_widget_add_attached_window (priv->attach_widget, window);
 
-      g_object_ref (priv->attach_widget);
+      g_object_add_weak_pointer (priv->attach_widget, &priv->attach_widget);
     }
 
   /* Update the style, as the widget path might change. */